#include "socket.h"
int socket_init(const char *ipaddr, const char *port)
{
    int s_fd = -1;
    int ret = -1;
    struct sockaddr_in s_addr; // 一般用这个 _in表示inet ipv4协议
    memset(&s_addr, 0, sizeof(struct sockaddr_in));
    // 1. socket
    s_fd = socket(AF_INET, SOCK_STREAM, 0); // 创建套接字类型
    if (s_fd == -1)
    {
        perror("socket");
        return -1;
    }
    s_addr.sin_family = AF_INET;         // 设置地址族
    s_addr.sin_port = htons(atoi(port)); // 设置端口号
    inet_aton(ipaddr, &s_addr.sin_addr); // 将来自 IPv4 点分十进制表示法的 Internet 主机地址 cp 转换为二进制形式（以网络字节顺序）并将其存储在 inp 指向的结构体中。

    // 2. bind
    ret = bind(s_fd, (struct sockaddr *)&s_addr, sizeof(struct sockaddr_in));
    if (-1 == ret)
    {
        perror("bind");
        return -1;
    }
    // 3. listen
    ret = listen(s_fd, 1); // 只监听1个连接，排队扔垃圾
    if (-1 == ret)
    {
        perror("listen");
        return -1;
    }
    return s_fd;
}